<?php

/**
 * Classe de ações do formulario frmMain
 */
class frmMain extends IfrmMain {
	/**
	 * Armazena as configurações
	 * 
	 * @var array
	 */
	public $config = array();
	
	/**
	 * Armazena os plugins
	 * 
	 * @var array
	 */
	public $plugins = array();
	
	/**
	 * Construtor
	 */
	public function __construct() {
		parent::__construct();
	}
	
	/**
	 * Método do carregamento do formulario
	 */
	public function frmMain_onload() {
		// Load config file
		$this->config = parse_ini_file(APPLICATION_PATH . "/config.ini", TRUE);
		
		// Carrega os plugins
		$this->loadPlugins();
		
		// Adiciona o restante dos itens de menu
		$this->widgets['mnuMain']->append_item("Sair", array($this, "frmMain_unload"));
		
		// Inicia a aplicação
		Gtk::main();
	}
	
	/**
	 * Método do descarregamento do formulario
	 */
	public function frmMain_unload() {
		// Finaliza os plugins
		foreach($this->plugins as $plugin) {
			$plugin->unload();
		}
		
		// Encerra a aplicação
		Gtk::main_quit();
		exit(0);
	}
	
	/**
	 * Método que mostra o menu ao clicar no popup
	 */
	public function stiMain_onpopup($widget) {
		$this->widgets['mnuMain']->popup();
	}
	
	/**
	 * Método que carrega os plugins
	 */
	public function loadPlugins() {
		foreach($this->config['plugins'] as $plugin_name => $enabled) {
			if($enabled) {
				$filename = APPLICATION_PATH . "/plugins/" . $plugin_name . "/" . $plugin_name . ".plugin.php";
				if(file_exists($filename)) {
					require_once($filename);
					
					$class_name = "\\" . $plugin_name . "\\" . $plugin_name;
					
					if(class_exists($class_name)) {
						$this->plugins[$plugin_name] = new $class_name($this);
						$this->plugins[$plugin_name]->run();
					}
					else {
						echo "Plugin " . $plugin_name . " not loaded! Class " . $class_name . "() not found!\n";
					}
				}
				else {
					echo "Plugin " . $plugin_name . " not found!\n";
				}
			}
			
		}
		
		
		// Le o diretório de plugins
		//$dirs = scandir(APPLICATION_PATH . "plugins/");
		//~ 
		//~ // Percorre os diretórios
		//~ foreach($dirs as $dir) {
			//~ // Remove os controladores de diretório
			//~ if(($dir == ".") || ($dir == "..")) {
				//~ continue;
			//~ }
			//~ 
			//~ // Cria o nome do arquivo do plugin
			//~ $filename = APPLICATION_PATH . "plugins/" . $dir . "/" . $dir . ".plugin.php";
			//~ 
			//~ // Verifica se o plugin existe
			//~ if(file_exists($filename)) {
				//~ // Inclui o arquivo do plugin
				//~ require_once($filename);
				//~ 
				//~ // Cria o nome da classe
				//~ $classname = $dir . "Plugin";
				//~ 
				//~ // Verifica se a classe do plugin existe
				//~ if(class_exists($classname)) {
					//~ // Adiciona um separador no menu
					//~ $this->widgets['mnuMain']->append_separator();
					//~ 
					//~ // Cria o plugin
					//~ $this->plugins[$dir] = new $classname($this);
					//~ 
					//~ // Busca o menu item
					//~ $menuitem = $this->plugins[$dir]->getMenuItem();
					//~ 
					//~ // Adiciona um separador no menu
					//~ $this->widgets['mnuMain']->append_separator();
				//~ }
			//~ }
		//~ }
	}
}
